package com.tanhua.dubbo.server.api;

import com.tanhua.dubbo.server.enums.CommentType;
import com.tanhua.dubbo.server.pojo.Comment;
import com.tanhua.dubbo.server.pojo.Publish;
import com.tanhua.dubbo.server.vo.PageInfo;


public interface QuanZiApi {

    /**
     * 查询好友动态
     *
     * @param userId   用户id
     * @param page     当前页数
     * @param pageSize 每一页查询的数据条数
     * @return
     */
    PageInfo<Publish> queryPublishList(Long userId, Integer page, Integer pageSize);

    /**
     * 发布动态
     *
     * @param publish
     * @return 发布成功返回动态id
     */
    String savePublish(Publish publish);


    /**
     * 查询推荐动态
     *
     * @param userId   用户id
     * @param page     当前页数
     * @param pageSize 每一页查询的数据条数
     * @return
     */
    PageInfo<Publish> queryRecommendPublishList(Long userId, Integer page, Integer pageSize);

    /**
     * 根据id查询动态
     *
     * @param id 动态id
     * @return
     */
    Publish queryPublishById(String id);

    /**
     * 点赞或喜欢
     * @param userId
     * @param publishId
     * @return
     */
    Boolean likeOrLoveComment(Long userId, String publishId, CommentType commentType);

    /**
     * 取消点赞或取消喜欢
     * @param userId
     * @param publishId
     * @return
     */
    Boolean disLikeOrLoveComment(Long userId, String publishId,CommentType commentType);

    /**
     * 查询点赞数或喜欢数
     * @param publishId
     * @return
     */
    Long queryCommenCount(String publishId,CommentType commentType);

    /**
     * 查询用户是否点赞或喜欢该动态
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean queryUserIsLikeOrLove(Long userId, String publishId, CommentType commentType);


    Long getCommenCount(String publishId , CommentType commentType);



    /**
     * 查询评论
     *
     * @return
     */
    PageInfo<Comment> queryCommentList(String publishId, Integer page, Integer pageSize);

    /**
     * 发表评论
     *
     * @param userId
     * @param publishId
     * @param content
     * @return
     */
    Boolean saveComment(Long userId, String publishId, String content);

    /**
     * 查询评论数
     *
     * @param publishId
     * @return
     */
    Long queryCommentCount1(String publishId);

    /**
     * 查询对我的评论喜欢点赞消息列表
     *
     * @param userId
     * @param page
     * @param pageSize
     * @param commentType
     * @return
     */
    PageInfo<Comment> queryCommentListByUser(Long userId, Integer page, Integer pageSize ,CommentType commentType);

    /**
     * 查询相册表
     *
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Publish> queryAlbumList(Long userId, Integer page, Integer pageSize);

}



